RAM_F.trainers.addTrainer( trainerId )
	If not already present, adds data to RAM.trainers  (un-caught, un-defeated)
  Always returns a reference to the specified trainer object.

RAM_F.pokedex.addPokemon( pokeId )
	If not already present, adds data to RAM.pokedex  (none caught, no known touch-spots, no lastPhoto)
  Always returns a reference to the specified pokedex object.
RAM_F.pokedex.addPicture( id, path )
RAM_F.pokedex.removePokemon( id )
RAM_R.pokedex.hasPokemon( id )		= T/F

RAM_F.items.addItem( id )
	Add one of this item to the player's inventory
RAM_F.items.removeItem( id )
	Remove one of this item from the player's inventory
RAM_F.items.removeAll( id )
	Remove all of this item from the player's inventory
RAM_F.items.haveItem( id )		= T/F

RAM_F.equipment.addItem( id )
RAM_F.equipment.removeItem( id )
RAM_F.equipment.removeAll( id )

RAM_F.pokemon.addPokemon( id,level,index,partyObjPath )		(string param)  (optionally insert the pokemon at the index)  (returns a direct reference to the new pokemon's object)
RAM_F.pokemon.removePokemon( id/index,partyObjPath )			[return:  list of pokemon objects removed]		(removes all pokemon with that ID / index number)
RAM_F.pokemon.removeUniquePokemon( trainerId,partyObjPath )				[return:  list of pokemon objects removed]		(removes all pokemon with that trainerId)
	legacy name:  RAM_F.pokemon.removeTrainer		(still works for backward compatibility reasons)
RAM_F.pokemon.hasPokemon( id,partyObjPath )		= index / undefined
RAM_F.pokemon.hasUniquePokemon( trainerId,partyObjPath )		= index / undefined
	legacy name:  RAM_F.pokemon.hasTrainer		(still works for backward compatibility reasons)
RAM_F.pokemon.hasAttack( moveName, partyObjPath/pokeObjRef )
	legacy name:  RAM_F.pokemon.hasTM		(still works for backward compatibility reasons)
RAM_F.pokemon.addAttack( moveName, partyObjPath/pokeObjRef )				= new attack's index
	Adds an attack to a pokemon / 1st pokemon.		(doesn't add any TM items)  (targets the 1st pokemon by default  (the trainer)
	legacy name:  RAM_F.pokemon.addTM		(still works for backward compatibility reasons)
RAM_F.pokemon.removeAttack( moveName, partyObjPath/pokeObjRef )		= t/f  (whether or not any attack was removed)
	Removes an attack from a pokemon / 1st pokemon.		(doesn't remove any TM items)  (targets the 1st pokemon by default  (the trainer)
	legacy name:  RAM_F.pokemon.removeTM		(still works for backward compatibility reasons)
RAM_F.pokemon.changeLevel( pokemonObjectPath, newLevel )		(level-up or level-down an existing pokemon to the specified level)
RAM_F.pokemon.updateAllWithId( trainerId, srcPokeObjPath )
	// UNTESTED
	Replaces every pokemon with the specified trainerId with the data of the pokemon specified by srcPokeObjPath.
	Checks these locations for matching pokemon:
	- RAM.pokemon
	- RAM.storage
	- RAM.pokemonLost
	- RAM.backup.[every entry].pokemon
RAM_F.pokemon.getPokeWithId( trainerId )		= pokeObj
	// UNTESTED
	Search "everywhere" for a pokemon with the specified trainerId and return a clone of their data.

Deprecated commands.  Use RAM_F.pokemon. etc...  with "partyObjPath" parameter instead
	X  RAM_F.pokemonLost.addPokemon( id,level )		(string param)  (optionally insert the pokemon at the index)
	X  RAM_F.pokemonLost.removePokemon( id/index )			(removes all pokemon with that ID / index number)
	X  RAM_F.pokemonLost.hasPokemon( id )					(Returns whether or not any pokemon of this ID type are in the "pokemonLost" list, such as "pikachu")
	X  RAM_F.pokemonLost.getUniquePokemonIndex( trainerId )			(Returns undefined/index of the first pokemon with this trainerId in the "pokemonLost" list, such as "ashPikachu"  (false if the pokemon isn't found)
		legacy name:  getTrainerIndex		(still works for backward compatibility reasons)

	X  RAM_F.storage.addPokemon( id,level )		(string param)
	X  RAM_F.storage.removePokemon( id )			(removes all pokemon with that ID)
	X  RAM_R.storage.hasPokemon( id )		= T/F

RAM_F.shops.restockRandom( itemName )
	Randomly add this item to one of the last 2 shops visited.  Returns the idName of the shop that received the item.

RAM_F.getNickname( name )
RAM_F.getUniquePokemonName()										(Returns the nickname/id + getNickname() of the pokemon with the specified trainerID, regardless of which party they're in)
	legacy name:  RAM_F.getTrainerName		(still works for backward compatibility reasons)
RAM_F.copySprite( spriteName, storePath )				"storePath" is optional.  Always returns a copy of the appearance-data object of the on-map sprite specified by "spriteName"

RAM_F.copyObject( src_path, dest_path )
RAM_F.hasText( find , withinThis )							Checks whether or not a specified string exists within a string variable  (returns true or false)
RAM_F.removeText( remove , fromThis )						Removes a specified string from a string variable  (returns the string without the specified text)
RAM_F.trimDecimal( input, decimalLength )				Trincates a number down to a certain number of decimal places  (returns a number)
RAM_F.removeArrayItem( varPath, index )					Removes an element from an array.  Removes the item at the specified index from the array specified by varPath
RAM_F.array.remove( varPath, index )						Splices out the element at the specified index from an array
RAM_F.array.add( varPath, newItem, index )			Pushes / Splices a new item into the specified array.  ("index" is optional)
RAM_F.makeObjectString( objectPath )						(Reads an object at the specified path and returns a string of key:value pairs, which can later be placed into {} to create populated objects.  (omits child arrays and child objects)  This can also be used to read pokemon objects and send their data to scripted battles like so {[dataString]}
RAM_F.getKeyName( keyCode )											Returns the human-readable name of a keyboard button based on the specified key-code
RAM_F.getListFromObject( objPath )							Return an array containing the name of each variable within the specified object
RAM_F.spriteListAtTile( xTile, yTile )					Returns an array of movieClips or undefined if there are no sprites at that location
==>																								NOTE:  You MUST use "make a shortcut to this value"  copying the results => undefined


RAM_F.party.placeMember( partyMemberName, followSpriteName )
RAM_F.party.hideAll()
RAM_F.party.showAll()
RAM_F.party.getPartyOrder()											Returns an array of party-member names, the order they follow the player
LEVEL.updateParty()
LEVEL.resetPartyPositions()
LEVEL.clearParty()
	(removes on-screen sprites of the current party)

ROOT.gameOver()
